package com.aliwo.design.patterns.singleton;

/**
 * @author xuyayuan
 * @description 通过枚举实现单例模式
 * 使用时直接Singleton.INSTANCE.doSomeThing();即可。
 * 这里主要利用了枚举的如下两个特性：
 *  枚举的构造器总是私有的，所以不必像前几种方式一样显式定义私有构造方法
 *  枚举类中的每个值，都是实例（只有INSTANCE这一个实例）
 * 除此之外，枚举还附带了一些额外好处：无偿地提供了序列化机制，还可以防止通过多次反序列化生成多个实例。
 * @date 2021/8/26 11:46
 */
public enum Singleton {

    /**
     * 单例实例
     */
    INSTANCE;

    public void doSomeThing() {
        System.out.println("通过枚举实现单例模式，推荐的模式");
    }

}
